//
/**
 * Filename: fig10-7_sleep1.c
 * Author:   csbonkers
 * Contact:  forever65535@qq.com
 * Date:     2021/6/19
 * Description:
 *    sleep 简化、不完整的实现
 *    该程序存在3个问题
 *      * 调用进程之前设置了定时器，调用该函数后被擦除
 *      * 修改了SIGALRM信号的处理动作
 *      * 第一次调用 alarm 与 pause 形成竞争条件
 */
#include "apue.h"

void sig_alrm(int signo){
  /* nothing to do, just return to wake up the pause */
}

unsigned int sleep1(unsigned int secs){
  if(signal(SIGALRM, sig_alrm) == SIG_ERR){
    return secs;
  }
  alarm(secs);
  pause();
  return alarm(0);
}

int main(int argc, char *argv[]) {

  sleep1(3);

  return 0;
}


